Location-Based Searching

ABSTRACT

A method includes receiving a search query from a user device, identifying a plurality of function records included in a data store based on the received search query, and determining a search location. Each function record includes an access mechanism specifying a state of an application, state information corresponding to the state of the application, and location data including a coordinate and a perimeter. The coordinate defines the location of a place corresponding to the state information and the perimeter defines a geographic area surrounding the coordinate. The method also includes determining whether the search location is located within the geographic area defined by the location data of the function record for each of the plurality of function records, selecting access mechanisms from function records that include location data defining a geographic area that includes the search location, and transmitting the selected access mechanisms to the user device.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims priority under 35 U.S.C. §119(e) to U.S.Provisional Application 61/943,105, filed on Feb. 21, 2014, which ishereby incorporated by reference in its entirety.

TECHNICAL FIELD

This disclosure relates to techniques for generating search results, andmore particularly, to generating search results based on a geographiclocation.

BACKGROUND

In recent years, use of computers, smartphones, and otherInternet-connected devices has grown exponentially. Correspondingly, thenumber of available software applications for such devices has alsogrown. Today, many diverse native and web software applications can beaccessed on any number of different devices, including, but not limitedto, smartphones, personal computers, automobiles, and televisions. Thesediverse applications can range from business driven applications, games,educational applications, news applications, shopping applications,messaging applications, media streaming applications, social networkingapplications, and so much more. Furthermore, application developersdevelop vast amounts of applications within each genre and eachapplication may have numerous editions.

SUMMARY

One aspect of the disclosure provides a method including receiving asearch query at a computing device from a user device, and identifying,by the computing device, a plurality of function records included in adata store based on the received search query. Each function recordincludes an access mechanism specifying a state of an application, stateinformation describing the state of the application specified by theaccess mechanism, and location data including a coordinate and aperimeter. The coordinate defines the location of a place described bythe state information and the perimeter defines a geographic areasurrounding the coordinate. The method also includes determining, by thecomputing device, a search location. For each of the plurality offunction records, the method further includes determining, by thecomputing device whether the search location is located within thegeographic area defined by the location data of the function record, andselecting, by the computing device, access mechanisms from functionrecords that include location data defining a geographic area thatincludes the search location. The method further includes transmittingthe selected access mechanisms from the computing device to the userdevice.

Implementations of the disclosure may include one or more of thefollowing optional features. In some implementations, the identifiedplurality of function records includes a first set of function recordsdefining geographic areas that include the search location. Theidentified plurality of function records may include a second set offunction records defining geographic areas that do not include thesearch location, and selecting access mechanisms from function recordsincludes filtering out function records in the second set of functionrecords and selecting access mechanisms from the first set of functionrecords.

In some implementations, the method further includes generating, by thecomputing device, the perimeter for at least one of the function recordsbased on the population of the area surrounding the coordinate.Alternatively, the method may include generating, by the computingdevice, the perimeter for at least one of the function records based onthe population density of the area surrounding the coordinate. In someexamples, the method includes generating, by the computing device, theperimeter for at least one of the function records based on theproximity of the coordinate to transportation infrastructure.Optionally, the method may include generating, by the computing device,the perimeter for at least one of the function records based on thepopularity of the place defined by the state information.

In some examples, for at least one of the plurality of function records,the perimeter is a circular perimeter defining a circular geographicarea surrounding the coordinate and the coordinate defines a centerpoint of the circular perimeter. The location data may include a radiusvalue around the coordinate that defines the circular perimeter.Optionally, the method also includes generating, by the computingdevice, the radius value based on the population of the geographic areasurrounding the coordinate. In other examples, for at least one of theplurality of location records, the perimeter is a polygon perimeterdefining a geographic area surrounding the coordinate and the coordinatedefines a center point of the polygon perimeter.

In some implementations, the method also includes, for each of theidentified function records, determining, by the computing device, ascore for the function record based on where the determined searchlocation is located within the geographic area defined by the locationdata of the function record. The score may indicate a relevance of theidentified function record to the search query and the search location.In some examples, determining the score for the function record furtherincludes determining the score based on the distance of search locationfrom the coordinate. The method may further include receiving, at thecomputing device, data from the user device indicating the geo-locationof the user device and determining the search location based on at leastone of a location specified in the search query and the data from theuser device indicating the geo-location of the user device.

Another aspect of the disclosure provides a system including one or morecomputing devices and a data store that includes function records. Eachfunction record includes an access mechanism specifying a state of anapplication, state information describing the state of the applicationspecified by the access mechanism, and location data including acoordinate and a perimeter. The coordinate defines the location of aplace described by the state information and the perimeter defines ageographic area surrounding the coordinate. The one or more computingdevices are configured to receive a search query from a user device,identify a plurality of function records included in the data storebased on the received search query, and determine a search location. Theone or more computing devices are further configured to determinewhether the search location is located within the geographic areadefined by the location data of the function record for each of theplurality of function records, select access mechanisms from functionrecords that include location data defining a geographic area thatincludes the search location, and transmit the selected accessmechanisms to the user device.

This aspect may include one or more of the following optional features.In some implementations, the identified plurality of function recordsincludes a first set of function records defining geographic areas thatinclude the search location. The identified plurality of functionrecords may include a second set of function records defining geographicareas that do not include the search location, and the one or morecomputing devices are configured to select access mechanisms byfiltering out function records in the second set of function records andselecting access mechanisms from the first set of function records.

In some implementations, the one or more computing devices areconfigured to generate the perimeter for at least one of the functionrecords based on the population of the area surrounding the coordinate.Alternatively, the one or more computing devices may be configured togenerate the perimeter for at least one of the function records based onthe population density of the area surrounding the coordinate. In someexamples, the one or more computing devices are be configured togenerate the perimeter for at least one of the function records based onthe proximity of the coordinate to transportation infrastructure.Optionally, the one or more computing devices may be configured togenerate the perimeter for at least one of the function records based onthe popularity of the place defined by the state information.

In some examples, for at least one of the plurality of function records,the perimeter is a circular perimeter defining a circular geographicarea surrounding the coordinate and the coordinate defines a centerpoint of the circular perimeter. The location data may include a radiusvalue around the coordinate that defines the circular perimeter.Optionally, the one or more computing devices are configured to generatethe radius value based on the population of the geographic areasurrounding the coordinate. In some implementations, the one or morecomputing devices are configured to determine, for each of theidentified function records, a score for the function record based onwhere the determined search location is located within the geographicarea defined by the location data of the function record. The score mayindicate a relevance of the identified function record to the searchquery and the search location.

In yet another aspect of the disclosure provides a non-transitorycomputer-readable storage medium including instructions that cause oneor more computing devices to receive a search query from a user deviceand identify a plurality of function records included in the data storebased on the received search query, and determine a search location.Each function record includes an access mechanism specifying a state ofan application, state information describing the state of theapplication specified by the access mechanism, and location dataincluding a coordinate and a perimeter. The coordinate defines thelocation of a place described by the state information and the perimeterdefines a geographic area surrounding the coordinate. The instructionsalso cause the one or more computing devices to determine whether thesearch location is located within the geographic area defined by thelocation data of the function record for each of the plurality offunction records, select access mechanisms from function records thatinclude location data defining a geographic area that includes thesearch location, and transmit the selected access mechanisms to the userdevice.

The details of one or more implementations of the disclosure are setforth in the accompanying drawings and the description below. Otheraspects, features, and advantages will be apparent from the descriptionand drawings, and from the claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a schematic view of an example environment including a searchsystem.

FIG. 2 is a schematic view of an example user device in communicationwith a search system.

FIGS. 3A-4C are schematic views of example function records that includelocation data.

FIG. 5 is a flow diagram of an example method for performing alocation-based search.

FIG. 6 is a flow diagram of another example method for performing alocation-based search.

FIG. 7 is a flow diagram of an example method describing operation of auser device.

FIG. 8 is a functional block diagram of an example search module.

FIG. 9 is a flow diagram of another example method for performing alocation-based search.

FIG. 10 is a flow diagram of an example method for performing alocation-based search directed to application discovery.

FIG. 11 is a schematic view of an example graphical user interface (GUI)directed to application discovery.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

A search system of the present disclosure implements a location-basedsearch. The search system receives a query wrapper from a user devicethat includes a search query and data indicating the geo-location of theuser device. The search system generates search results in response tothe received query wrapper and transmits the search results to the userdevice. As described herein, the search system may generate the searchresults based on the location of the user device (i.e., the user'slocation) and/or a location specified in the search query so that searchresults are geographically relevant to the user. The location used bythe search system (e.g., device or query-specified location) to generatethe search results may be generally referred to herein as a “searchlocation.”

The search system stores records (referred to herein as “functionrecords”) that the search system may use to implement the location-basedsearch of the present disclosure. Each function record may include oneor more access mechanisms, application state information, and locationdata that the search system may use to generate the search results. Thesearch system may transmit access mechanisms in the search results thatthe user device may use to access application functionality. Accessmechanisms may include native application access mechanisms and webaccess mechanisms used to access functionality of native applications(e.g., installed on the user device) and web applications/websites,respectively. Access mechanisms may also include application downloadaddresses that indicate sites (e.g., web/native) where a nativeapplication can be downloaded in the scenario where the nativeapplication is not installed on the user device.

The application state information of a function record includes datathat describes an application state into which an application is setaccording to the access mechanism(s) of the function record. Forexample, the application state information of a function record mayinclude data that may be presented to the user by an application whenthe application is in the application state specified by the accessmechanism(s) of the function record. In some examples, the applicationstate information may include data that describes the function performedaccording to the access mechanism included in the function record.

The location data of a function record may define a geographic area thatincludes a place described in the application state information of thefunction record. The location data may include a coordinate (e.g.,latitude and longitude) that indicates the location of the place. Thelocation data may also define a perimeter that surrounds the place(e.g., coordinate). Put another way, the perimeter may define thegeographic area that includes the place described in the applicationstate information. The location data may define regular or irregularshapes. In one example, the location data may include a center point anda radius value that define a circular geographic area (e.g., having acircular perimeter) around the place described in the application stateinformation.

In operation, the search system receives a query wrapper from the userdevice. The search system may determine a geo-location (e.g., latitudeand longitude) of the user device based on data included in the querywrapper. The search system identifies a plurality of function recordsbased on the received search query. For example, the search system mayidentify function records based on matches between terms of the searchquery and terms included in the application state information of thefunction records. The search system may filter and/or score theidentified function records based on a determined search location andlocation data included in the function records.

In some implementations, the search system may select one or morefunction records in which the geo-location of the user device isincluded within the geographic area defined by the location data of thefunction records. The search system may then generate search resultsbased on the selected function records. For example, the search systemmay include access mechanisms from the selected function records in thesearch results. The search system may refrain from transmitting accessmechanisms (e.g., filter out access mechanisms) of function records inwhich the geo-location data of the user device is outside the geographicarea defined by the location data.

The search system may generate scores for function records that indicatethe relevance of the function record to the search query. In someimplementations, the search system may generate scores for identifiedfunction records based on the geo-location of the user device and thelocation data of the identified function records. For example, thesearch system may generate a score for a function record based on wherethe user device is located relative to the geographic area defined bythe location data. In one example, the search system may generate ascore for a function record based on where the user device is locatedinside of the geographic area.

In some implementations, the search system may use a location other thanthat of the user device in order to filter and/or score the identifiedfunction records. For example, the search system may detect a locationspecified in the search query (i.e., a query-specified location) thatthe search system may use to filter and/or score the identified functionrecords. The search system may use the geo-location of the user deviceto filter and/or score the function records in the absence of aquery-specified location. In other implementations, the search systemmay use a user-preferred location that is specified by the user (e.g.,specified in the search application). In these implementations, thesearch system may use the user-preferred location to filter and/or scorethe function records instead of the geo-location of the user device.

The location data of a function record may be generated and updated in avariety of different ways. In some examples, a human operator maygenerate and/or update the location data. In other examples, the searchsystem may automatically generate and/or update the location data of thefunction records. The search system (or a human operator) may generatethe location data based on factors including, but not limited to, apopulation of a geographic area, a population density of a geographicarea, a number of similar places that are nearby (e.g., similar types ofentities, such as restaurant entities or dentist entities), a popularityof the place, a proximity of the place to transportation infrastructure(e.g., a highway), user behavior data indicating the distance users arewilling to travel for a place, machine learned distance-related features(e.g., from keywords in the description), advertiser data (e.g., anadvertiser specifying to advertise their business with a geo-fence, anduser-interaction with ads. Generating and updating location data on aper-record basis allows the search system to tailor the geographicrelevance of places independently from one another based on a variety ofdifferent factors, which may increase the probability that the searchresults are geographically relevant to the user.

In some examples, location data may include a coordinate (e.g., centerpoint) and define a perimeter (e.g., a radius) that surrounds thecoordinate. In these examples, the search system may generate and/orupdate the perimeter based on the above factors, or other factors. Forexample, the search system may generate a larger perimeter (e.g., largerradius) that covers a larger geographic area if the place is popular. Asanother example, the search system may generate a smaller perimeter(e.g., a smaller radius) if there are similar places nearby (e.g., otherstores in the same chain).

Location-based searching techniques are described with reference toFIGS. 1-11. FIGS. 1-2 illustrate an environment that includes a userdevice that communicates with a search system. FIGS. 3A-4C illustrateexample function records that include location data. FIGS. 5-7illustrate example methods for performing location-based search. FIGS.8-9 describe an example search module that implements location-basedsearch. FIGS. 10-11 describe an example search system and user devicedirected to application discovery.

FIG. 1 is a functional block diagram illustrating an example environmentincluding a search system 100 that communicates with user devices 102and data sources 104 via a network 106. The network 106 through whichthe search system 100 and the user devices 102 communicate may includevarious types of networks, such as a local area network (LAN), wide areanetwork (WAN), and/or the Internet. FIG. 2 shows an example user device102 in communication with the search system 100 via the network 106 (notillustrated in FIG. 2).

The search system 100 includes a search module 108, a function recordgeneration/update module 110 (hereinafter “record generation module110”), and a data store 112. The search module 108 receives a querywrapper 200 from the user device 102. The search module 108 performs asearch for function records included in the data store 112 based on dataincluded in the query wrapper 200, such as a search query 202. Thefunction records include one or more access mechanisms that the userdevice 102 can use to access different functions for a variety ofdifferent applications, such as native applications 204 installed on theuser device 102. The search module 108 transmits search results 206including a list of access mechanisms 208 to the user device 102 thatgenerated the query wrapper 200. As described herein, the recordgeneration module 110 may generate new function records in the datastore 112 and update existing function records.

The user device 102 generates user selectable links based on thereceived search results 206 (e.g., links 210 a, 210 b, . . . , 210 e ofFIG. 2). Each user selectable link displayed to the user may include anaccess mechanism. A user may select a user selectable link on the userdevice 102 by interacting with the link (e.g., touching or clicking thelink). In response to selection of a link, the user device 102 maylaunch the application (e.g., native application or web application)referenced by the access mechanism and perform one or more operationsindicated in the access mechanism.

A software application may refer to computer software that causes acomputing device to perform a task. In some examples, a softwareapplication may be referred to as an “application”, an “app”, or a“program.” Example applications include, but are not limited to, wordprocessing applications, spreadsheet applications, messagingapplications, media streaming applications, social networkingapplications, and games.

Applications can be executed on a variety of different computingdevices. For example, applications can be executed on mobile computingdevices such as smart phones, tablets, and wearable computing devices(e.g., headsets and/or watches). Applications can also be executed onother types of computing devices having other form factors such aslaptop computers, desktop computers, or other consumer electronicdevices. In some examples, applications may be installed on a computingdevice prior to a user purchasing the computing device. In otherexamples, the user may download and install applications on thecomputing device.

The functionality of an application may be accessed on the computingdevice on which the application is installed. Additionally, oralternatively, the functionality of an application may be accessed via aremote computing device. In some examples, all of an application'sfunctionality is included on the computing device on which theapplication is installed. These applications may function withoutcommunication with other computing devices (e.g., via the Internet). Inother examples, an application installed on a computing device mayaccess information from other remote computing devices during operation.For example, a weather application installed on a computing device mayaccess the latest weather information via the Internet and display theaccessed weather information to the user through the installed weatherapplication. In still other examples, an application (e.g., a web basedapplication) may be partially executed by the user's computing deviceand partially executed by a remote computing device. For example, a webapplication may be an application that is executed, at least in part, bya web server and accessed by a web browser of the user's computingdevice. Example web applications may include, but are not limited to,web-based email, online auctions, and online retail sites.

Access mechanisms may include at least one of a native applicationaccess mechanism (hereinafter “application access mechanism”), a webaccess mechanism, and an application download address. The user device102 may use the access mechanisms to access functionality ofapplications. For example, the user may select a user selectable linkincluding an access mechanism in order to access functionality of anapplication indicated in the user selectable link. As described herein,the search module 108 may transmit one or more application accessmechanisms, one or more web access mechanisms, and one or moreapplication download addresses to the user device 102 in the searchresults 206.

An application access mechanism may be a string that includes areference to a native application (e.g., one of native applications 204)and indicates one or more operations for the user device 102 to perform.If a user selects a user selectable link including an application accessmechanism, the user device 102 may launch the native applicationreferenced in the application access mechanism and perform the one ormore operations indicated in the application access mechanism.

A web access mechanism may include a resource identifier that includes areference to a web resource (e.g., a page of a web application/website).For example, a web access mechanism may include a uniform resourcelocator (URL) (i.e., a web address) used with hypertext transferprotocol (HTTP). If a user selects a user selectable link including aweb access mechanism, the user device 102 may launch the web browserapplication 212 and retrieve the web resource indicated in the resourceidentifier. Put another way, if a user selects a user selectable linkincluding a web access mechanism, the user device 102 may launch the webbrowser application 212 and access a state (e.g., a page) of a webapplication/website. In some examples, web access mechanisms may includeURLs for mobile-optimized sites and/or full sites.

An application download address may indicate a site (e.g., a digitaldistribution platform) where a native application can be downloaded inthe scenario where the native application is not installed on the userdevice 102. If a user selects a user selectable link including anapplication download address, the user device 102 may access a digitaldistribution platform from which the referenced native application maybe downloaded. The user device 102 may access a digital distributionplatform using at least one of the web browser application 212 and oneof the native applications 204.

The search module 108 is configured to receive a query wrapper 200 fromthe user device 102 via the network 106. A query wrapper 200 may includea search query 202. A search query 202 may include text, numbers, and/orsymbols (e.g., punctuation) entered into the user device 102 by theuser. For example, the user may have entered the search query 202 into asearch field 214 (e.g., a search box) of a search application 216running on the user device 102. A user may enter a search query using atouchscreen keypad, a mechanical keypad, and/or via speech recognition.As described herein, in some examples, the search application 216 may bea native application installed on the user device 102. For example, thesearch application 216 may receive search queries, generate the querywrapper 200, and display received data that is included in the searchresults 206. In other examples, the user device 102 may execute a webbrowser application 212 that accesses a web-based search application. Inthis example, the user may interact with the web-based searchapplication via the web browser application 212 installed on the userdevice 102. In still other examples, the functionality attributed to thesearch application 216 herein may be included as a searching componentof a larger application that has additional functionality. For example,the functionality attributed to the search application 216 may beincluded as part of a native/web application as a feature that providessearch for the native/web application.

The query wrapper 200 may include additional data along with the searchquery 202. For example, the query wrapper 200 may include geo-locationdata 218 that indicates the location of the user device 102, such aslatitude and longitude coordinates. The user device 102 may include aglobal positioning system (GPS) receiver that generates the geo-locationdata 218 transmitted in the query wrapper 200. The query wrapper 200 mayalso include an IP address 220 that the search module 108 may use todetermine the location of the user device 102. The query wrapper mayalso include additional data that the search module 108 may use todetermine the location of the user device 102, such as data indicatingcurrent cell towers and nearby WiFi access points in communication withthe user device 102. In some examples, the query wrapper 200 may alsoinclude additional data, including, but not limited to, platform data222 (e.g., version of the operating system 224, device type, andweb-browser version), an identity of a user of the user device 102(e.g., a username), partner specific data, ISP/hostname, and other data,some of which may be used to determine the location of the user device102.

The search module 108 can use the search query 202 and the additionaldata included in the query wrapper 200 to generate the search results206. For example, the search module 108 can determine a geo-location ofthe user device 102 which the search module 108 can use along with thesearch query 202 to generate the search results 206. The search module108 can determine the geo-location of the user device 102 based on thegeo-location data 218 or other data (e.g., IP address 220) included inthe query wrapper 200 to perform a location-based search. In someimplementations, the search module 108 may detect a location (e.g., apostal address, street name, city name, etc.) that is specified in thesearch query 202 (i.e., a query-specified location). In theseimplementations, the search module 108 can use the query-specifiedlocation along with the search query 202 to generate the search results206.

The search module 108 performs a search for function records included inthe data store 112 in response to the received query wrapper 200 (e.g.,search query 202 and geo-location data 218). In some implementations,the search module 108 generates result scores for function recordsidentified during the search. The result score associated with afunction record may indicate the relevance of the function record to thesearch query 202. A higher result score may indicate that the functionrecord is more relevant to the search query 202. As described herein,the search module 108 may retrieve access mechanisms from the scoredfunction records. The search module 108 can transmit a result score 226along with an access mechanism retrieved from a scored function recordin order to indicate the rank of the access mechanism among othertransmitted access mechanisms 208.

The search module 108 may transmit additional data to the user device102 along with the access mechanisms 208 and the result scores 226. Forexample, the search module 108 may transmit data (e.g., text and/orimages) to be included in the user selectable links. Data for the userselectable links (e.g., text and/or images) may be referred to herein as“link data” (e.g., link data 230). The user device 102 displays the userselectable links to the user based on received link data 230. Each userselectable link may be associated with an access mechanism included inthe search results 206 such that when a user selects a link, the userdevice 102 launches the application referenced in the access mechanismand sets the application into the state specified by the accessmechanism.

FIG. 2 shows an example list of user selectable links 210 that a userdevice 102 may display to a user. Each of the links 210 include linkdata. For example, each of the links 210 includes an image (e.g., anicon) and text (e.g., an application or business name) that may describean application and a state of an application. Each of the links 210 mayinclude an access mechanism so that if a user selects one of links 210,the user device 102 launches the application and sets the applicationinto a state that is specified by the access mechanism associated withthe selected link. In some implementations, the user device 102 mayarrange the links 210 based on result scores associated with the accessmechanisms included in the links 210. In some implementations, asillustrated in FIG. 2, links for the same application may be combinedtogether in the search results displayed to the user.

User devices 102 can be any computing devices that are capable ofproviding search queries to the search system 100. User devices 102include, but are not limited to, smart phones, tablet computers, laptopcomputers, and desktop computers. User devices 102 may also includeother computing devices having other form factors, such as computingdevices included in vehicles, gaming devices, televisions, or otherappliances (e.g., networked home automation devices and homeappliances).

The user devices 102 may use a variety of different operating systems.In an example where a user device 102 is a mobile device, the userdevice 102 may run an operating system including, but not limited to,ANDROID® developed by Google Inc., IOS® developed by Apple Inc., orWINDOWS PHONE® developed by Microsoft Corporation. Accordingly, theoperating system 224 running on the user device 102 may include, but isnot limited to, one of ANDROID®, IOS®, or WINDOWS PHONE®. In an examplewhere a user device is a laptop or desktop computing device, the userdevice may run an operating system including, but not limited to,MICROSOFT WINDOWS® by Microsoft Corporation, MAC OS® by Apple, Inc., orLinux. User devices 102 may also access the search system 100 whilerunning operating systems other than those operating systems describedabove, whether presently available or developed in the future.

In general, a user device 102 may communicate with the search system 100using any application that can transmit search queries to the searchsystem 100. In some examples, a user device 102 may run a nativeapplication that is dedicated to interfacing with the search system 100,such as a native application dedicated to searches (e.g., searchapplication 216). In some examples, a user device 102 may communicatewith the search system 100 using a more general application, such as aweb-based application accessed using the web browser application 212.Although the user device 102 may communicate with the search system 100using a web based application and/or a native search application, theuser device 102 may be described hereinafter as using the native searchapplication 216 to communicate with the search system 100.

The search application 216 may display a search field 214 on a graphicaluser interface (GUI) in which the user can enter search queries. Theuser may enter a search query using a touchscreen or physical keyboard,a speech-to-text program, or other form of user input. In general, asearch query may be a request for information retrieval (e.g., searchresults) from the search system 100. For example, a search query may bedirected to retrieving a list of links to application functionality orapplication states in examples where the search system 100 is configuredto generate a list of access mechanisms as search results. A searchquery directed to retrieving a list of links to applicationfunctionality may indicate a user's desire to access functionality ofone or more applications described by the search query.

A user device 102 may receive a set of search results 206 from thesearch module 108 that are responsive to the query wrapper 200transmitted to the search system 100. The GUI of the search application216 displays (e.g., renders) the search results 206 received from thesearch module 108. The search application 216 may display the searchresults 206 to the user in a variety of different ways, depending onwhat information is transmitted to the user device 102. In exampleswhere the search results 206 include a list of access mechanisms andlink data, the search application 216 may display the search results tothe user as a list of user selectable links including text and images.The text and images in the links may include application namesassociated with the access mechanisms, text describing the accessmechanisms, images associated with the application referenced by theaccess mechanisms (e.g., application icons), and images associated withthe application state (e.g., application screen images) defined by theaccess mechanisms.

In some implementations, the search application 216 may display thesearch results 206 as a list of links (e.g., links 210 of FIG. 2)arranged under the search field (e.g., search field 214 of FIG. 2) inwhich the user entered the search query. The search application 216 mayarrange the links in order by result scores associated with the accessmechanisms included in the links. In some examples, the searchapplication 216 may group the links together if the links are related tothe same application.

With respect to FIG. 2, it may be assumed that the YELP® nativeapplication developed by Yelp, Inc., and the TRIPADVISOR® nativeapplication developed by TripAdvisor, Inc., are installed on the userdevice 102. Links 210 a, 210 b and link 210 c reference the YELP® nativeapplication and the TRIPADVISOR® native application, respectively. TheGUI includes a header 232, including the name “Yelp,” under which thelinks 210 a, 210 b are arranged. The header 232 may indicate that thelinks 210 a, 210 b arranged below the header 232 are associated with theYELP® native application. Selection of link 210 a may cause the userdevice 102 to launch the YELP® native application and retrieve an IHOP®restaurant entry of the YELP® native application. Selection of link 210b may cause the user device 102 to launch the YELP® native applicationand retrieve a DENNY'S® restaurant entry of the YELP® nativeapplication. Selection of link 210 c may cause the user device 102 tolaunch the TRIPADVISOR® native application and retrieve an entry for“Late night diners” in the TRIPADVISOR® native application (e.g., asearch for “Late night diners”).

Link 210 d includes a web access mechanism (e.g., a URL). Selection oflink 210 d may cause the user device 102 to launch the web browserapplication 212 and retrieve an entry for “Late night diners” in theOPENTABLE® web application developed by OpenTable, Inc. Link 210 eincludes an application download address for the URBANSPOON® nativeapplication by InterActiveCorp. Selection of link 210 e may cause theuser device 102 to access a digital distribution platform from which theURBANSPOON® native application can be downloaded and/or previewed. Asdescribed herein, the search module 108 can be configured to transmitany combination of application access mechanisms, web access mechanisms,and application download addresses in the search results 206.

In some examples, user devices 102 may communicate with the searchsystem 100 via a partner computing system (not illustrated). The partnercomputing system may be a computing system of a third party that mayleverage the search functionality of the search system 100. The partnercomputing system may belong to a company or organization other than thatwhich operates the search system 100. Example third parties that mayleverage the functionality of the search system 100 may include, but arenot limited to, internet search providers and wireless communicationsservice providers. The user devices 102 may send search queries to thesearch system 100 and receive search results via the partner computingsystem. The partner computing system may provide a user interface to theuser devices 102 in some examples and/or modify the search experienceprovided on the user devices 102.

The data store 112 includes a plurality of different function records.Each function record may include data related to a function of anapplication and/or the state of the application resulting fromperformance of the function. A function record may include a functionidentifier (ID), location data, application state information, and oneor more access mechanisms used to access functionality provided by anapplication. The data store 112 may include one or more databases,indices (e.g., inverted indices), tables, files, or other datastructures which may be used to implement the techniques of the presentdisclosure. The search module 108 receives a query wrapper 200 andgenerates search results based on the data included in the data store112.

FIG. 1 shows a plurality of data sources 104. The data sources 104 maybe sources of data which the search system 100 (e.g., the recordgeneration module 110) may use to generate and update the data store112. The record generation module 110 retrieves data from one or more ofthe data sources 104. The data retrieved from the data sources 104 caninclude any type of data related to application functionality and/orapplication states. The record generation module 110 may use the dataretrieved from the data sources 104 to create and/or update one or moredatabases, indices, tables (e.g., an access table), files, or other datastructures included in the data store 112. For example, the recordgeneration module 110 may create new function records and updateexisting function records based on data retrieved from the data sources104. In some examples, some data included in the data store 104 may bemanually generated by a human operator. For example, some data includedin the function records (e.g., application state information) may bemanually generated by a human operator. The record generation module 110(or a human operator) may update the data included in the functionrecords over time so that the search system 100 provides up-to-dateresults.

The data sources 104 may include a variety of different data providers.The data sources 104 may include data from application developers, suchas application developers' websites and data feeds provided bydevelopers. The data sources 104 may include operators of digitaldistribution platforms configured to distribute native applications touser devices 102. Example digital distribution platforms include, butare not limited to, the GOOGLE PLAY® digital distribution platform byGoogle, Inc., the APP STORE® digital distribution platform by Apple,Inc., and WINDOWS PHONE® Store developed by Microsoft Corporation.

The data sources 104 may also include other websites, such as websitesthat include web logs (i.e., blogs), application review websites, orother websites including data related to applications. Additionally, thedata sources 104 may include social networking sites, such as“FACEBOOK®” by Facebook, Inc. (e.g., Facebook posts) and “TWITTER®” byTwitter Inc. (e.g., text from tweets). Data sources 104 may also includeonline databases that include, but are not limited to, data related tomovies, television programs, music, and restaurants. Data sources 104may also include additional types of data sources in addition to thedata sources described above. Different data sources may have their owncontent and update rate.

Referring now to FIG. 3A, an example function record 300 includes afunction identifier 302 (hereinafter “function ID 302”), location data304, application state information 306, and one or more accessmechanisms 308. The function record 300 may include data related to afunction of an application and/or the state of the application resultingfrom performance of the function. The data store 112 may include aplurality of function records having a similar structure as the functionrecord 300. Put another way, the data store 112 may include a pluralityof function records having a function ID 302, location data 304,application state information 306, and one or more access mechanisms308.

The function ID 302 may be used to identify the function record 300among the other function records included in the data store 112. Thefunction ID 302 may be a string of alphabetic, numeric, and/or symboliccharacters (e.g., punctuation marks) that uniquely identify the functionrecord 300 in which the function ID 302 is included. In some examples,the function ID 302 may describe a function and/or an application statein human readable form. For example, the function ID 302 may include thename of the application referenced in the access mechanism(s) 308.Additionally, or alternatively, the function ID 302 may be a humanreadable string that describes a function performed according to theaccess mechanism(s) 308 and/or an application state resulting fromperformance of the function according to the access mechanism(s) 308. Insome examples, the function ID 302 may include a string in the format ofa uniform resource locator (URL) of a web access mechanism for thefunction record 300, which may uniquely identify the function record.

In a more specific example, if the function record 300 describes afunction of the YELP® native application, the function ID 302 mayinclude the name “Yelp” along with a description of the applicationstate described in the application state information 306. For example,the function ID 302 for a function record that describes the restaurantnamed “The French Laundry” may be “Yelp—The French Laundry.” In anexample where the function ID 302 includes a string in the format of aURL, the function ID 302 may include the following string“http://www.yelp.com/biz/the-french-laundry-yountville-2?ob=1” touniquely identify the function record 300. In other examples, thefunction ID 302 may include a URL using a namespace other than“http://,” such as “func://,” which may indicate that the URL is beingused as a function ID in a function record. For example, the function ID302 may include the following string“func://www.yelp.com/biz/the-french-laundry-yountville-2?ob=1.”

The function record 300 includes one or more access mechanisms 308. Theaccess mechanism(s) 308 may include one or more application accessmechanisms, one or more web access mechanisms, and one or moreapplication download addresses. The user device 102 may use the one ormore application access mechanisms and the one or more web accessmechanisms to access the same, or similar, functionality of thenative/web application referenced in the application state information306. For example, the user device 102 may use the different accessmechanism(s) 308 to retrieve similar information, play the same song, orplay the same movie. The application download addresses may indicatesites (e.g., web/native, such as the GOOGLE PLAY® digital distributionplatform) where the native applications referenced in the applicationaccess mechanisms can be downloaded.

The application state information 306 may include data that describes anapplication state into which an application is set according to theaccess mechanism(s) 308 in the function record 300. Additionally, oralternatively, the application state information 306 may include datathat describes the function performed according to the accessmechanism(s) 308 included in the function record 300. The applicationstate information 306 may include a variety of different types of data.For example, the application state information 306 may includestructured, semi-structured, and/or unstructured data. In someimplementations, the record generation module 110 may extract and/orinfer the application state information 306 from documents retrievedfrom the data sources 104. Additionally, or alternatively, theapplication state information 306 may be manually generated data. Therecord generation module 110 may update the application stateinformation 306 so that up-to-date search results can be provided inresponse to a search query.

In some examples, the application state information 306 may include datathat may be presented to the user by an application when the applicationis set in the application state defined by the access mechanism(s) 308.For example, if one of the access mechanism(s) 308 is an applicationaccess mechanism (e.g., 412 of FIG. 4A), the application stateinformation 306 may include data that describes a state of the nativeapplication after the user device 102 has performed the one or moreoperations indicated in the application access mechanism. In oneexample, if the function record 300 is associated with a shoppingapplication, the application state information 306 may include data thatdescribes products (e.g., names and prices) that are shown when theshopping application is set to the application state defined by theaccess mechanism(s) 308. As another example, if the function record 300is associated with a music player application, the application stateinformation 306 may include data that describes a song (e.g., name andartist) that is played when the music player application is set to theapplication state defined by the access mechanism(s) 308.

The types of data included in the application state information 306 maydepend on the type of information associated with the application stateand the functionality defined by the access mechanism(s) 308. In oneexample, if the function record 300 is for an application that providesreviews of restaurants, the application state information 306 mayinclude information (e.g., text and numbers) related to a restaurant,such as a category of the restaurant, reviews of the restaurant, and amenu for the restaurant. In this example, the access mechanism(s) 308may cause the application (e.g., a web or native application) to launchand retrieve information for the restaurant (e.g., using the web browserapplication 212 or one of native applications 204). As another example,if the function record 300 is for an application that plays music, theapplication state information 306 may include information related to asong, such as the name of the song, the artist, lyrics, and listenerreviews. In this example, the access mechanism(s) 308 may cause theapplication to launch and play the song described in the applicationstate information 306.

The function record 300 includes location data 304. In someimplementations, the search module 108 may use the location data 304 tofilter out function records that may not be relevant to a user becauseof the user's location relative to the place associated with thefunction records. For example, at search time, the search module 108 mayfilter out function records associated with places that are located toofar from the user. Additionally, or alternatively, the search module 108may score and rank the search results 206 based on the location data 304included in the function records. For example, the search module 108 mayassign larger result scores to function records associated with placesthat are nearer to the user.

The location data 304 may define a geographic area associated with thefunction record 300. For example, the geographic area defined by thelocation data 304 may be a geographic area that includes a placedescribed in the application state information 306. In some examples,the geographic area defined by the location data 304 may define aperimeter that surrounds a geographic area including a place describedin the application state information 306. For example, if the accessmechanism(s) 308 provide access to reviews of a specific restaurant inMountain View, Calif., then the location data 304 may define ageographic area that surrounds the specific restaurant. As describedabove, the application state information 306 includes data thatdescribes an application state into which an application is setaccording to the one or more access mechanism 308. Accordingly, thelocation data 304 may also define a geographic area that surrounds aplace for which the access mechanism(s) 308 retrieve information.

The geographic area defined by the location data 304 may have a varietyof different geometries. For example, the location data 304 may define ageographic area having a circular geometry, a polygon geometry (e.g., arectangular geometry, hexagonal geometry, octagonal geometry, etc.), orother basic shape. In some examples, the location data 304 may define ageographic area having a more irregular shape. The location data 304 maydefine the geographic area in variety of different ways, depending onthe shape of the geographic area. In some examples, the location data304 may include geographic coordinates (e.g., latitude and longitude)that define the geographic area. In other examples, the location data304 may include one or more addresses (e.g., a postal address) thatdefine the geographic area.

FIG. 3B shows another example function record 310. Function record 310includes example location data 312 that includes a coordinate 314 and aperimeter 316. The coordinate 314 and the perimeter 316 together definea geographic area that surrounds the place described in the applicationstate information 318. The coordinate 314 may be a geographic coordinateof the place described in the application state information 318. Forexample, the coordinate 314 may include a latitude value and a longitudevalue of the place described in the application state information 318.In some examples, the coordinate 314 may include different data thatindicates a location, such as an address (e.g., a postal address) of theplace. In some implementations, the location data 304, 312, 322 may begenerated using geocoding processes.

The perimeter 316 may surround the coordinate 314. Accordingly, the areasurrounding the coordinate 314 may be bounded by the perimeter 316. Theperimeter 316 can have a variety of different geometries. In someexamples, the perimeter 316 may have a circular geometry, a polygongeometry (e.g., a rectangular geometry), or other basic shape. In otherexamples, the perimeter 316 may have a more irregular shape.

FIG. 3C illustrates an example function record 320 including locationdata 322 that defines a geographic area. The location data 322 includesa coordinate 324 and a radius value 326. The coordinate 324 and theradius value 326 together define a circular geographic area thatsurrounds the place described in the application state information 328.The coordinate 324 may be a geographic coordinate of the place describedin the application state information 328. The radius value 326 maydefine a circular perimeter that surrounds the coordinate 324. Forexample, the perimeter around the coordinate 324 may be a circle havinga center point at the coordinate 324 and a radius having the radiusvalue 326. Accordingly, the radius value 326 may define the radiuslength of a circular geographic area including the place described inthe application state information 328.

Although FIG. 3C illustrates an example where location data 322 definesa circular geographic area, function records may include location datathat define geographic areas having other shapes. For example, afunction record may include location data that defines a polygon region,such as a rectangular (e.g., square) region that surrounds the placedescribed in the application state information. In this example, thecoordinate may define the location of the place. The coordinate may belocated at the center of the polygon region and the location data maydefine the dimensions of the polygon region (e.g., the side lengths). Inexamples where the polygon region is a rectangular region, the perimetermay be defined by a length value and a width value that define thelength and width of the rectangular region surrounding the coordinate.In some examples, the coordinate may be located in the center of therectangular region. In examples where the rectangular region has asquare geometry, the perimeter may be defined by a single value thatindicates the length of each side of the square region.

The size of the geographic area defined by the location data may vary.In some examples, the geographic area may be less than a square mile inarea for those places that are more relevant to a user when the user isin close proximity to the place (e.g., less than 1 mile). With respectto location data 322, the radius value 326 may be a fraction of a milein length (e.g., approximately 0.5 miles) in these examples. In otherexamples, the geographic area may cover hundreds of square miles forplaces that are more relevant at greater distances from the user. Withrespect to location data 322, the radius value 326 may be multiple milesin length (e.g., approximately 10 miles) in these examples. In stillother examples, the geographic area may have worldwide coverage forthose places that are relevant to a user from any distance. With respectto location data 322, the radius value 326 may be thousands of miles inlength, such that the geographic area covers most or all of the planet.

The location data 304 may be generated in a variety of different ways.In some implementations, the location data may be manually generated bya human operator. For example, a human operator may manually generatethe initial location data (e.g., the coordinate 324 and the radius value326). After generating the initial location data, the human operator mayupdate the location data 304 at a later time. For example, with respectto function record 320, the human operator may update the coordinate 324if the place described by the function record 320 moves to a differentlocation. As another example, the human operator may update theperimeter 316 (e.g., the radius value 326) to reflect other changes,such as a population of a geographic area, a population density, anumber of similar places that are nearby, and a popularity of the place.A user may manually update the location data 304 over time so that thesearch module 108 provides up-to-date results.

Although a human operator may generate and/or update the location data304, in some implementations, the record generation module 110 maygenerate and/or update the location data 304. For example, the recordgeneration module 110 may automatically generate the initial locationdata (e.g., the coordinate 324 and radius value 326) and update thelocation data 304 at a later time. The record generation module 110 maygenerate and/or update the location data 304 based on a variety ofdifferent factors. For example, the record generation module 110 maygenerate and update location data 304 based on data retrieved from datasources 104, or from other sources. In one example, the recordgeneration module 110 may update the coordinate 314 if the placedescribed by the function record 310 moves to a different location. Asanother example, the record generation module 110 may update theperimeter 316 to reflect other changes, such as a population of ageographic area, a population density, a number of similar places thatare nearby, and a popularity of the place. The record generation module110 may automatically update the location data 304 over time so that thesearch module 108 provides up-to-date results. Different techniques forgenerating the location data 304 are described herein.

The record generation module 110 (or a human operator) may generate thelocation data 304 based on a variety of different parameters. In someimplementations, the record generation module 110 may generate thelocation data 304 based on the popularity of the place described by theapplication state information 306. The record generation module 110 maydetermine the popularity of a place based on ratings, reviews, dataindicating how often the function record 300 is retrieved during priorsearches, and/or how often access mechanism(s) 308 of the functionrecord are selected by a user (e.g., the number of times accessmechanism(s) 308 were selected when included in prior search results).In some examples, the record generation module 110 may generate locationdata 304 that defines a larger geographic area for places that are morepopular. For example, the record generation module 110 may generate alarger radius value 326 in the location data 322 when the placedescribed by the application state information 328 is popular.Increasing the size of the geographic area defined in the location data304 based on popularity may reflect the notion that more popular placesmay be more relevant to a user, even if the user is located farther fromthe place.

In some implementations, the record generation module 110 may generatethe location data 304 based on the population and/or population densityof the area in which the place described by the application stateinformation 306 is located. In some examples, the record generationmodule 110 may generate location data 304 that defines a largergeographic area for places that are located in less populated places orplaces having less population density. For example, the recordgeneration module 110 may generate a larger radius value 326 in thelocation data 322 when the place described by the application stateinformation 328 is located in a low population area or an area that hasa low population density. Increasing the size of the geographic areadefined in the location data 304 based on population and/or populationdensity may reflect the notion that places located farther away from auser may still be relevant to the user since users living in moresparsely populated areas may be required to travel greater distances toacquire more sparsely available goods and services.

In a specific example related to the generation of location data basedon population density, it may be assumed that function records exist forfour different WENDY'S® restaurants in the data store 112. Three of theWENDY'S® restaurants are located in a densely populated area in SanFrancisco, Calif., USA. The other WENDY'S® restaurant is located in aless densely populated area in Rock Springs, Wyo., USA. The functionrecords associated with the three WENDY'S® restaurants in San Franciscomay have a smaller geographic area (e.g., perimeter) associated withthem than the function record for the WENDY'S® restaurant in RockSprings, Wyo. For example, the record generation module 110 (or a humanoperator) may generate location data including a 10 mile radius valuefor the three WENDY'S® restaurants in San Francisco based on thepopulation of the area including the WENDY'S® restaurants. The recordgeneration module 110 may generate location data including a 100 mileradius for the WENDY'S® in Rock Springs.

In some implementations, the record generation module 110 may generatethe location data 304 based on the number of similar places in the areain which the place described by the application state information 306 islocated. For example, if a chain store (e.g., retail outlet orrestaurant) has multiple different stores near one another, the recordgeneration module 110 may generate the location data associated with asingle store based on whether other similar stores are located nearbyand/or how many stores are located nearby. In some examples, the recordgeneration module 110 may generate location data 304 that defines asmaller geographic area for places that are located near other similarplaces. For example, the record generation module 110 may generate asmaller radius value 326 in the location data 322 when the placedescribed by the application state information 328 is located near othersimilar places. Shrinking the size of the geographic area defined in thelocation data 322 based on the presence (or number) of places nearby mayreflect the notion that each of the similar places may have a more localarea of interest to users. For example, users that drink coffee fromstores in the Starbucks® chain may be interested more in locallyrelevant Starbucks® stores, rather than those Starbucks® stores that arelocated farther away.

In some implementations, the record generation module 110 may generatethe location data 304 based on the proximity of the place totransportation infrastructure, such as one or more highways. Forexample, the record generation module 110 may generate a largergeographic area for places that are in proximity to interstate highways.In some examples, the record generation module 110 may generate ageographic area having a shape that runs along the transportationinfrastructure that is located in proximity to the place.

The record generation module 110 may also generate the location data 304based on a variety of different parameters including, but not limitedto, the uniqueness of the entity (e.g., restaurant), the relativedensity of a particular chain (e.g., store or restaurant), the type ofthe entity (e.g., movie theater, restaurant, department store)associated with the location, the uniqueness of the name of the entity,available delivery options associated with the entity, and user dataassociated with the entity (e.g., location of reviewers for arestaurant). For example, with respect to the uniqueness of the entity,more unique entities (e.g., those having a lower density of locations)may have a larger associated geographic area. With respect to therelative density of a chain, a smaller density of stores may cause eachof the stores to have a larger associated geographic area. With respectto a uniqueness of the name of an entity, an entity having a more uniquename (e.g., a name including “airport” rather than “dry cleaner”) may beassigned a larger associated geographic area. With respect to availabledelivery options associated with the entity, the geographic areaassociated with the entity may be limited to the delivery range of theentity (e.g., the pizza delivery range of a pizza restaurant).

Although the record generation module 110 is described above asautomatically generating and updating the location data 322 byautomatically generating and updating the radius value 326, the recordgeneration module 110 may automatically generate location data bygenerating other parameters of the location data in different examples.For example, in implementations where the location data defines shapesother than a circle, the record generation module 110 may generate otherparameters in the location data that modifies the geographic areadefined by the location data. In one example, if the location data 304defines a rectangular shape, the record generation module 110 may modifythe size of the rectangular shape by modifying the length and/or widthof the rectangular shape. For example, the record generation module 110may modify the length and/or width based on parameters including, butnot limited to, the factors described above, such as the popularity ofthe place described in the application state information 306, populationand/or population density, and the number of similar places in the area.In a similar manner, the record generation module 110 may generate andupdate the location data 304 by modifying different dimensionalparameters for differently shaped geographic regions.

Some function records (e.g., function record 320) may include locationdata that defines a single geographic area (e.g., a single circulararea). Other function records may include location data that defines aplurality of different geographic areas. For example, a function recordmay include multiple sets of location data that define multipledifferent geographic areas. In an example in which a function recordincludes location data that defines two different geographic areas, thefunction record may include a first set of location data that defines afirst geographic area and a second set of location data that describes asecond geographic area. The multiple geographic areas of a functionrecord may have basic shapes (e.g., circular or polygon) or moreirregular shapes. The different geographic areas may be separated fromone another. In other examples, the different geographic areas mayoverlap with one another. The location data defining a plurality ofdifferent geographic areas may be manually entered by a human operator.In other examples, the record generation module 110 may automaticallygenerate the location data defining a plurality of different geographicareas.

A function record directed to multiple different places may includelocation data that defines multiple different geographic areas. In oneexample, a function record directed to a chain of stores (e.g.,restaurants, convenience stores, gas stations, etc.) may includelocation data that defines a geographic area for each of the stores. Theseparate places may be located any distance from one another. Forexample, the places may be located in the same city, different states ofthe U.S., or different countries. In some examples, the differentgeographic areas may not overlap with one another. In other examples,some, or all of the geographic areas may overlap with one another.

Other function records directed to multiple different places may includefunction records associated with different concepts or categories, suchas restaurant categories (e.g., breakfast restaurants) or businesscategories (e.g., a gas station or a convenience store). For example, afunction record associated with Chicago breakfast restaurants in theYELP® application may include location data for different breakfastrestaurants in Chicago, Ill. The application state information mayinclude data that describes breakfast restaurants in Chicago, the nameof breakfast restaurants, along with other data that is relevant tobreakfast entries in the YELP® application. In some examples, an accessmechanism for the function record may include a link to an entry in theYELP® application that displays different breakfast restaurants inChicago. In other examples, an access mechanism may include a link thatperforms a search for “Breakfast” in “Chicago, Ill.” in the YELP®application.

A function record that is associated with an application that offersservice, or is otherwise relevant, in different geographic areas mayinclude location data that defines a geographic area for each of theseparate geographic areas where the application offers service. Forexample, if an application only offers service in distinct cities, thenlocation data included in a function record associated with theapplication may define multiple separate geographic areas correspondingto the distinct cities. Put another way, if an access mechanism of afunction record references an application that provides service indistinct places, the location data included in the function record maydefine separate geographic areas corresponding to those distinct places.

FIG. 3D shows an example function record 330 associated with theOPENTABLE® application, developed by OpenTable, Inc. The OPENTABLE®application is a restaurant-reservation application that allows users tosearch for restaurants and make restaurant reservations. The OPENTABLE®application provides information about restaurants includingdescriptions of restaurants and user reviews of the restaurants. Theexample function record 330 of FIG. 3D describes an application state ofthe OPENTABLE® application in which the OPENTABLE® application accessesinformation for THE FRENCH LAUNDRY® restaurant.

The function record 330 includes the function ID “OPENTABLE—THE FRENCHLAUNDRY” indicated at 332, which may be used as a unique identifier toidentify the function record 330. In other examples, the function ID 332could include a URL as a unique identifier for the function record 330.For example, the function ID 332 may include the string“http://www.opentable.com/the-french-laundry” as a unique identifier forthe function record 330. As described herein, such a function ID may beincluded in a web access mechanism of a function record. As anotherexample, the function ID may have a different namespace than “http://,”such as “func://.” In another example, the function ID could be a stringof characters, numbers, and/or symbols that are not in human readableform.

The function record 330 includes application state information 334. Theapplication state information 334 includes data fields for therestaurant category of THE FRENCH LAUNDRY® restaurant, a description ofTHE FRENCH LAUNDRY® restaurant, user reviews of THE FRENCH LAUNDRY®restaurant, and additional data fields. The restaurant category fieldmay include the text “French cuisine” and “contemporary,” for example.The description field may include text that describes THE FRENCHLAUNDRY® restaurant. The user reviews field may include text of userreviews for THE FRENCH LAUNDRY® restaurant. The additional data fieldsmay include additional data for THE FRENCH LAUNDRY® restaurant that maynot specifically fit within the other defined fields, such as a menu forthe restaurant, prices, and operating hours for the restaurant.

The function record 330 includes one or more access mechanism(s) 336.The access mechanism(s) 336 may include a reference to the OPENTABLE®application. An example application access mechanism for the functionrecord 330 may include a reference to the OPENTABLE® native applicationalong with one or more operations to be performed by the user device102. For example, the application access mechanism may include anapplication resource identifier and/or one or more operations that causethe user device 102 to access the entry for THE FRENCH LAUNDRY®restaurant in the OPENTABLE® native application. An example applicationresource identifier may be“vnd.opentable.deeplink://opentable.com/restaurant/profile?rid=1180&refid=1.”

The function record 330 includes location data 338 that defines ageographic area associated with THE FRENCH LAUNDRY® restaurant. Forexample, the geographic area defined by the location data 338 may be ageographic area that includes THE FRENCH LAUNDRY® restaurant. In oneexample, the location data 338 may define a perimeter that surrounds ageographic area including THE FRENCH LAUNDRY® restaurant. The geographicarea defined by the location data 338 may have a variety of differentgeometries. Since THE FRENCH LAUNDRY® restaurant is a world-renownedrestaurant, the location data 338 may define a large geographic areaaround THE FRENCH LAUNDRY® restaurant. In an example where the locationdata 338 includes a coordinate and a radius value, the coordinate mayinclude the geo-location of THE FRENCH LAUNDRY® restaurant. The radiusvalue may range from a value of hundreds of miles up to worldwidecoverage.

FIGS. 4A-4C show function records 400, 402, 404 that include a varietyof different access mechanisms. The function record 400 of FIG. 4Aincludes a single application access mechanism. The function record 402of FIG. 4B includes multiple application access mechanisms. The functionrecord 404 of FIG. 4C includes one or more application accessmechanism(s), one or more web access mechanism(s), and one or moreapplication download addresses.

Referring now to FIG. 4A, the function record 400 includes a function ID406, application state information 408, and location data 410, asdescribed above. The function record 400 also includes an applicationaccess mechanism 412. Accordingly, the function record 400 may includedata related to a function of a native application and/or the state ofthe native application resulting from performance of the function. Thedata store 112 may include a plurality of function records having asimilar structure as the function record 400.

The application access mechanism 412 may include a native applicationresource identifier 414 (i.e., an “application resource identifier”)and/or one or more operations 416 for a user device 102 to perform. Forexample, the application resource identifier 414 may be a string havingan application specific scheme. The application resource identifier mayinclude a reference to a native application and indicate one or moreoperations for the user device 102 (e.g., the native application) toperform. For example, the application resource identifier may include areference to a native application, a domain name, and a path to be usedby the native application to retrieve and display information to theuser.

An example application resource identifier for the OPENTABLE® nativeapplication on the ANDROID® operating system is“vnd.opentable.deeplink://opentable.com/restaurant/profile?rid=88333&refid=1.”A portion of the example application resource identifier references theOPENTABLE® native application. For example, the substring“vnd.opentable.deeplink” of the application resource identifierreferences the OPENTABLE® native application. The example applicationresource identifier also indicates one or more operations for theOPENTABLE® native application to perform. For example, the OPENTABLE®native application may retrieve and display the information included inthe application resource identifier domain and path defined by thesubstring “opentable.com/restaurant/profile?rid=88333&refid=1.” The userdevice 102 may launch the OPENTABLE® native application and displayinformation retrieved from the location indicated in the applicationresource identifier in response to selection of a displayed searchresult including the example application resource identifier. Theapplication resource identifier (e.g., the format) may be provided bythe developer of the application in some examples.

In some examples, the application access mechanism 412 may includeoperations 416 for the user device 102 to perform in addition to theoperation(s) indicated in the application resource identifier 414. Forexample, the search application 216, the operating system 224, and/orone of native applications 204 installed on the user device 102 mayperform the operations 416 included in the application access mechanism412 in order to set the native application into an application statespecified by the application access mechanism 412. In some examples, theoperations 416 may be included in a script. Examples of operations 416may include, but are not limited to, launching a native application,waiting for the native application to start, creating and sending asearch request to a server, setting a current geo-location in a nativeapplication, making a restaurant reservation, sending a text message,and adding an appointment to a calendar.

In some examples, the application access mechanism 412 may not includethe application resource identifier 414 illustrated in FIG. 4A. Instead,the application access mechanism 412 can include operations 416 thatreference a native application. The operations 416 may be performed bythe user device 102. The one or more operations 416 may includeinstructions for at least one of the search application 216, theoperating system 224, and one of native applications 204 on the userdevice 102. In response to selection of the application access mechanism412 by the user, the user device 102 may perform the operations 416included in the application access mechanism 412. In some examples, theoperations 416 may be included in a script.

The application access mechanism 412 may also include editioninformation 418 that indicates the application edition with which theapplication access mechanism 412 is compatible. For example, the editioninformation 418 may indicate the operating system with which theapplication access mechanism 412 is compatible. In some examples, thesearch module 108 can determine whether to transmit the applicationaccess mechanism 412 in the search results 206 based on whether the userdevice 102 (e.g., the operating system 224) can handle the applicationaccess mechanism 412.

In some examples, an application resource identifier 414 is anapplication specific resource identifier that is defined by thedeveloper of the application. In this example, the search application216 receives the application resource identifier 414 and the operatingsystem 224 may send the application resource identifier 414 to thenative application referenced in the application resource identifier414. The native application referenced in the application resourceidentifier 414 launches and is set into the state specified by theapplication resource identifier 414.

In some examples, an application function may not be accessible using anapplication resource identifier. For example, a function of theapplication may not include a corresponding application resourceidentifier that the native application may use to perform the function.As another example, some native applications may not be configured toreceive an application resource identifier. In these examples, anapplication access mechanism for the native application can include oneor more operations that cause the native application to perform thefunction that may not otherwise be accessible using an applicationresource identifier. For example, the search application 216 may receivethe one or more operations (e.g., operations 416) and execute the one ormore operations to set the native application into the desiredapplication state. In a specific example, the one or more operations mayinclude launching the native application along with additionaloperations for the native application to perform. For example, thesearch application 216 may initially trigger the native application tostart and then wait for a period of time for the native application tostart. Then, the search application 216 may perform additionaloperations included in the received application access mechanism, suchas issuing a search instruction to the native application.

In still other examples, a native application may be configured todirectly receive the operations transmitted by the search module 108. Inthese examples, the user device 102 may be configured to launch thenative application according to the application access mechanism andthen the launched native application may directly perform the operationsreceived from the search module 108.

A single native application can provide a variety of differentfunctionalities. For example, a restaurant reservation application canaccess reviews for a variety of different restaurants and set upreservations at a variety of different restaurants. Similarly, a travelapplication can book hotels, book flights, and provide reviews fordifferent travel destinations. The different functionalities associatedwith a single native application may be accessed using a plurality ofdifferent application access mechanisms. For example, with respect to arestaurant reservation application, the data store 112 may includefunction records having different application access mechanisms foraccessing different restaurant reviews and setting up reservations.Similarly, the data store 112 may include function records havingdifferent application access mechanisms for booking hotels, bookingflights, and accessing reviews for different travel destinations.

The application access mechanisms for a single native application mayvary in complexity. In some examples, the application access mechanismsmay cause a native application to launch and then perform additionaloperations after launching, as described above. In other examples,application access mechanisms may cause an application to launch into adefault state (e.g., a default homepage) without performing additionaloperations. A function record including an application access mechanismthat causes an application to launch into a default state may be thoughtof as an access mechanism that is related to the native application, butnot any particular state which may be accessed by the application. Afunction record including such an application access mechanism mayinclude application state information describing the native application,instead of any particular application state. For example, theapplication state information may include the name of the developer ofthe native application, the publisher of the native application, acategory (e.g., genre) of the native application, a description of thenative application (e.g., a developer's description), and the price ofthe native application. The application state information may alsoinclude security or privacy data about the native application, batteryusage of the native application, and bandwidth usage of the nativeapplication. The application state information may also includeapplication statistics. Application statistics may refer to numericaldata related to a native application. For example, applicationstatistics may include, but are not limited to, a number of downloads, adownload rate (e.g., downloads per month), a number of ratings, and anumber of reviews.

FIG. 4B shows an example function record 402 including multipledifferent access mechanisms. Specifically, the function record 402includes a first application access mechanism 420 a and a secondapplication access mechanism 420 b (collectively “application accessmechanisms 420”). The function record 402 also includes a function ID422, location data 424, and application state information 426, asdescribed above.

The first and second application access mechanisms 420 may be associatedwith first and second editions of a native application (i.e., first andsecond application editions), respectively. In general, differentapplication access mechanisms of a function record may be associatedwith different operating systems and/or different versions of a nativeapplication. For example, different editions of a native application mayrefer to editions of the same native application that run on differentoperating systems. For example, the YELP® native application forANDROID® and the YELP® native application for IOS® are two differenteditions of the YELP® native application. Different editions of a nativeapplication may also refer to different versions (e.g., version 1.0,2.0, phone version, tablet version, etc.) of a native application forthe same operating system. For example, the YELP® native application mayhave first and second versions for the ANDROID® operating system. Thedifferent application access mechanisms 420 are used to access the same,or similar, functionality of the native application. For example, thedifferent application access mechanisms 420 may retrieve similarinformation, play the same song, play the same movie, etc.

The example function record 402 of FIG. 4B includes application accessmechanisms 420 that are associated with different operating systems.First and second application access mechanisms 420 are associated withthe ANDROID® and IOS® operating systems, respectively. Each of theapplication access mechanisms 420 may include application resourceidentifiers that are specific to the different operating systems.Additionally, the operations included in the application accessmechanisms 420 may also be specific to the different operating systems.As described above, the application access mechanisms 420 may includeedition information.

The different application access mechanisms 420 included in the functionrecord 402 may cause the corresponding application editions to launchand perform similar functions so that the application editions are setinto similar application states. For example, the different applicationaccess mechanisms 420 included in the function record 402 may cause thecorresponding application editions to be set into the application statedescribed by the application state information 426. Accordingly,although the application resource identifiers and/or the operationsincluded in the application access mechanisms 420 may be different, thedifferent application access mechanisms 420 may cause the differentapplication editions to be set into similar application states. In oneexample, if the different application access mechanisms 420 referencedifferent editions of an internet music player application, thedifferent application access mechanisms 420 may cause the differentapplication editions to play the same song. In another example, if thedifferent application access mechanisms 420 reference different editionsof a restaurant reservation application, the different applicationaccess mechanisms 420 may cause the different application editions toretrieve reservation information for the same restaurant.

FIG. 4C shows an example function record 404 that includes one or moreweb access mechanisms 428 and one or more application download addresses430 along with one or more application access mechanisms 432, a functionID 434, location data 436, and application state information 438. Theone or more web access mechanism 428 may be used by a wide variety ofuser devices 102 running different operating systems. In some examples,the web access mechanisms 428 include web resource identifiers, such asa uniform resource locator (URL) (i.e., a web address) used withhypertext transfer protocol (HTTP).

The web access mechanism(s) 428 (e.g., URLs) may be used by the webbrowser application 212 to access a web resource (e.g., a page of a webapplication/website) that includes similar information and/or performssimilar functions as would be performed by a native application thatreceives the application access mechanism(s) 432. For example, the webaccess mechanism(s) 428 may direct the web browser application 212 to aweb version of the native application referenced in the applicationaccess mechanism(s) 432. If the function record 404 is for a specificMexican restaurant in the YELP® application, the application accessmechanism(s) 432 may include a reference to the YELP® native applicationand one or more operations that access an entry for the specific Mexicanrestaurant in the YELP® native application. In this example, the webaccess mechanism(s) 428 may include a web address that the web browserapplication 212 may use to access the entry for the specific Mexicanrestaurant on the YELP® application (e.g., web page of a webapplication/website).

The one or more application download addresses 430 indicate where thenative applications for the one or more application access mechanisms432 may be downloaded. An application download address 430 can be usedby a user device 102 to download a native application referenced in anapplication access mechanism 432 in the event that the nativeapplication is not installed on the user device 102. In some examples,an application download address 430 may include a web address (e.g., aURL) at which the native application can be previewed and downloaded.For example, an application download address 430 may direct the webbrowser application 212 to a digital distribution platform that isconfigured to distribute native applications. If a user device 102includes a native download application for accessing a digitaldistribution platform, the application download address 430 may directthe installed native download application to a site where the nativeapplication referenced in the application access mechanism 432 can bedownloaded. In some implementations, the function record 404 may includean application download address 430 for each native application editionreferenced in the application access mechanism(s) 432.

FIG. 5 shows an example method 500 for performing a location-basedsearch. The method 500 is described with respect to the user device 102,the search module 108, and the data store 112 as illustrated in FIG. 2.In block 502, the search module 108 receives the query wrapper 200. Inblock 504, the search module 108 determines the geographic location(i.e., geo-location) of the user device 102 based on data included inthe query wrapper 200.

In some examples, the search module 108 may determine the geo-locationof the user device 102 in terms of latitude and longitude values thatindicate the latitude and longitude of the user device 102. In someexamples, the search module 108 may determine the geo-location of theuser device 102 in terms of an address, such as a postal address (e.g.,street address). The geo-location of the user device determined by thesearch module 108 may be a point location in some examples (e.g., alatitude/longitude or a postal address). In other examples, thegeo-location may be a larger area, e.g., a small area surrounding theuser device 102, such as a city block. In some examples, the user device102 may generate geo-location data 218 (e.g., latitude and longitude)that indicates the geo-location of the user device 102. For example, theuser device 102 may generate the query wrapper 200 including thegeo-location data 218. In other examples, the search module 108 maydetermine the geo-location of the user device 102 based on data (e.g.,the IP address 220) included in the query wrapper 200. For example, thesearch module 108 may look up the location of the user device 102 usingthe IP address 220. In one example, the search module 108 maycommunicate with a remote server that can provide geo-location data forthe user device 102 based on the IP address 220. In other examples, thesearch module 108 may determine the geo-location of the user device 102based on a user profile (e.g., stored at the search system 100) that isassociated with the user device 102 that includes a user-preferredlocation or a user-frequented location.

In block 506, the search module 108 identifies function records in thedata store 112 based on the search query 202. For example, the searchmodule 108 may identify function records in the data store 112 bydetecting matches between terms of the search query 202 and termsincluded in the application state information of the function records.Some, or all, of the function records identified in block 506 mayinclude location data that the search module 108 may use to filterand/or score the function records.

In block 508, the search module 108 selects a set of function recordsfrom those function records identified in block 508. The set of functionrecords selected from the identified function records may be referred toas a “consideration set” of function records. As described herein, thesearch module 108 may score the consideration set of function recordsand include information from the consideration set of function recordsin the search results 206.

In some implementations, the search module 108 may select functionrecords from those function records identified in block 506 based on thegeo-location of the user device 102 and the location data included inthe identified function records. For example, the search module 108 mayselect a function record for inclusion in the consideration set if thegeo-location of the user device 102 is included within the geographicarea defined by the location data of the function record. In an examplewhere the geo-location of the user device 102 is a point location, suchas a latitude and longitude, the search module 108 may include afunction record in the consideration set if the point location definedby the latitude and longitude is included within the geographic areadefined by the location data of the function record.

For each of the function records identified in block 508, the searchmodule 108 may determine whether to include the function record in theconsideration set based on the location data included in the functionrecord and the geo-location of the user device. The search module 108may include function records in the consideration set in which thegeo-location of the user device 102 is located within the geographicarea defined by the location data of the function record. The searchmodule 108 may exclude function records from the consideration set ifthe geo-location of the user device 102 is located outside of thegeographic area defined by the location data of the function record. Putanother way, the search module 108 may filter out those function recordsin which the location of the user device 102 is outside the geographicarea defined by the location data of the function record. Filtering outfunction records in the manner described above may improve the relevancyof the search results 206 by limiting some search results to places thatare geographically relevant to the user at search-time.

In block 510, the search module 108 scores the consideration set offunction records. For example, the search module 108 may generate ascore (e.g., a result score 226) for each of the function records thatindicates the relevance of the function record to the search query 202.In some examples, the search module 108 may score a function recordbased on the location of the user device 102 within the geographic areadefined by the location data of the function record. For example, thesearch module 108 may generate a larger result score for functionrecords associated with places that are closer to the user device 102(i.e., the user). In some implementations, the search module 108 mayscore a function record based on how far outside of the perimeter thesearch location is located. For example, the search module 108 maygenerate reduced result scores for search locations located farther fromthe perimeter. In some examples, the search module 108 may determine theresult score based on how far outside of the perimeter the searchlocation is located relative to the size of the perimeter. For example,the search module 108 may tend to generate smaller result scores forfunction records if the search location is located farther away from arelatively small perimeter. In this example, the search module 108 maytend to generate larger result scores for function records if the searchlocation is located closer to a relatively large perimeter.

In block 512, the search module 108 selects one or more accessmechanisms from the function records for transmission in the searchresults 206. For example, the search module 108 may select accessmechanisms from the function records associated with the largest resultscores determined in block 510. In block 512, the search module 108generates the search results 206, and in block 514, the search module108 transmits search results 206 including a list of the selectedapplication access mechanisms 208. In some implementations, the searchmodule 108 may transmit all of the access mechanisms from the selectedfunction records to the user device 102. In other implementations, thesearch module 108 may determine which access mechanisms are compatiblewith the user device 102 based on the platform data 222. In theseimplementations, the search module 108 may transmit a subset of theaccess mechanisms from the selected function records which arecompatible with the user device 102 (e.g., based on OS version, webbrowser version, and/or device type).

The method 500 is an example method for performing a location-basedsearch. In some implementations, the search module 108 may implement alocation-based search in a manner that is different than that describedin the method 500. In some implementations, the search module 108 mayfilter out function records based on location data, as described abovewith respect to block 508. In other implementations, the search module108 may perform a location-based search by using the geo-location of theuser device 102 to score function records, without performing afiltering operation described above in block 508. For example, thesearch module 108 may score a function record based on the location ofthe user device 102 within the geographic area defined by the locationdata. In still other implementations, the search module 108 may performa location-based search by using the geo-location of the user device 102to filter function records, but not use the geo-location data to scorethe function records (e.g., in block 510).

FIG. 6 shows another method 600 for performing a location-based search.In the method 600, the search module 108 may use a query-specifiedlocation or the geo-location of the user device 102 to filter and/orscore the function records. The location used to filter and/or score thefunction records may be referred to as the “search location.” In themethod 600, the search module 108 may use the geo-location of the userdevice 102 to filter and/or score function records in scenarios wherethe user does not specify a location in the search query 202.Alternatively, the search module 108 may use a query-specified locationincluded in the search query 202 instead of the geo-location of the userdevice 102 in order to filter and/or score function records.

In block 602, the search module 108 receives the query wrapper 200. Inblock 604, the search module 108 determines whether the search query 202specifies a location, such as a postal address, zip code, street name,and/or a city name. If the search module 108 determines that the searchquery 202 specifies a location, the search module 108 may use thequery-specified location as the search location, as indicated in block606. In some examples, the search module 108 may map the query-specifiedlocation to a point location (e.g., a latitude and longitude). If thesearch module 108 determines that the search query 202 does not specifya location, the search module 108 may determine the geo-location of theuser device 102 in block 608 and use the determined geo-location of theuser device 102 as the search location, as indicated in block 610.

In block 612, the search module 108 identifies function records based onthe search query 202. In block 614, the search module 108 selects aconsideration set of function records based on the search location, asdetermined in either block 606 or block 610. As described above, thesearch module 108 may include a function record in the consideration setif the search location is located within the geographic area defined bythe location data of the function record. If a function record includeslocation data that defines multiple different geographic areas, thesearch module 108 may include the function record in the considerationset if the search location is located within at least one of themultiple different geographic areas.

In block 616, the search module 108 scores the function records of theconsideration set. In block 618, the search module 108 selects accessmechanisms from the selected function records. In block 620, the searchmodule 108 transmits the search results 206 to the user device 102.

FIG. 7 shows an example method 700 describing operation of an exampleuser device 102. It may be assumed that the user device 102 describedaccording to the method 700 includes a search application 216 (e.g., anative application or web browser implementation) that is configured tocommunicate with the search system 100.

In block 702, the search application 216 receives a search query fromthe user. In block 704, the user device 102 generates and transmits thequery wrapper 200 to the search system 100. In block 706, the userdevice 102 waits for the search results 206 to be received. The method700 continues in block 708 when the user device 102 receives the searchresults 206 from the search system 100. The search results 206 mayinclude a list of access mechanisms 208. The search results 206 may alsoinclude result scores 226 associated with the access mechanisms 208.Additionally, the search results 206 may include link data 230 (e.g.,text and/or images) for the access mechanisms 208. The searchapplication 216 may generate user selectable links in the GUI based onthe received link data 230.

In block 708, the search application 216 generates (e.g., renders) userselectable links based on the search results 206. In block 710, thesearch application 216 waits for the user to select one of the userselectable links. The method 700 continues in block 712 when the userselects (e.g., touches) one of the links. In response to selection of alink including an access mechanism, the user device 102 launches theapplication referenced in the access mechanism and performs one or moreoperations indicated in the access mechanism in block 712.

FIG. 8 shows an example search module 108 that includes a query analysismodule 800, a consideration set generation module 802 (hereinafter “setgeneration module 802”), and a consideration set processing module 804(hereinafter “set processing module 804”). The query analysis module 800receives the query wrapper 200. The query analysis module 800 analyzesthe received search query 202. For example, the query analysis module800 may perform various analysis operations on the received search query202. Example analysis operations may include, but are not limited to,tokenization of the search query 202, filtering of the search query 202,stemming, synonymization, and stop word removal. In someimplementations, the query analysis module 800 may detect aquery-specified location included in the search query 202. For example,the query analysis module 800 may detect at least one of a street name,a street address, a city, a state, a zip code, or other locationspecified in the search query 202.

The set generation module 802 identifies a plurality of function recordsbased on the received search query 202. In some examples, the setgeneration module 802 may identify the function records based on matchesbetween terms of the search query 202 and terms in the function records.For example, the set generation module 802 may identify the functionrecords based on matches between tokens generated by the query analysismodule 800 and words included in the function records, such as wordsincluded in the application state information and/or function IDs.

The set generation module 802 may then determine a search location touse for generation of a “consideration set” of function records. Theconsideration set of function records may refer to the function recordsthat are scored by the set processing module 804. The set generationmodule 802 may determine the geo-location of the user device 102 basedon data included in the query wrapper 200, as described herein. In someexamples, the set generation module 802 may use the geo-location of theuser device 102 as the search location. In other scenarios, if the queryanalysis module 800 detects a query-specified location, the setgeneration module 802 may use the query-specified location as the searchlocation.

The set generation module 802 may filter the identified function recordsbased on the determined search location. For example, the set generationmodule 802 may include function records in the consideration set if thefunction records include location data that define a geographic areathat includes the search location. In a more specific example, for eachof the identified function records, the set generation module 802 mayinclude the function record in the consideration set when the locationdata of the function record defines a geographic area that includes thesearch location. The set generation module 802 may exclude the functionrecord from the consideration set if the search location is outside ofthe geographic area defined by the location data. Accordingly, thefunction records included in the consideration set may be geographicallyrelevant to the user.

The set processing module 804 may score the function records in theconsideration set in order to generate a set of search results 206. Thescores associated with the function records may be referred to as“result scores.” The set processing module 804 may determine a resultscore for each of the function records in the consideration set. Theresult scores associated with a function record may indicate therelative rank of the function record (e.g., the access mechanisms) amongother function records. For example, a larger result score may indicatethat a function record is more relevant to the received search query202.

The information conveyed by the search results 206 may depend on how theresult scores 226 are calculated by the set processing module 804. Forexample, the result scores 226 may indicate the relevance of anapplication function or application state to the search query 202, thepopularity of an application function or state, or other properties ofthe application function or state, depending on what parameters the setprocessing module 804 uses to score the function records.

The set processing module 804 may generate result scores for functionrecords in a variety of different ways. In some implementations, the setprocessing module 804 generates a result score for a function recordbased on one or more scoring features. The scoring features may beassociated with the function record and/or the search query 202. Afunction record scoring feature (hereinafter “record scoring feature”)may be based on any data associated with a function record. For example,record scoring features may be based on any data included in theapplication state information of the function record. Example recordscoring features may be based on metrics associated with a person,place, or thing described in the function record. Example metrics mayinclude the popularity of a place described in the function recordand/or ratings (e.g., user ratings) of the place described in thefunction record. In one example, if the function record describes asong, a metric may be based on the popularity of the song described inthe function record and/or ratings (e.g., user ratings) of the songdescribed in the function record. The record scoring features may alsobe based on measurements associated with the function record, such ashow often the function record is retrieved during a search and how oftenaccess mechanisms of the function record are selected by a user. Recordscoring features may also be based on whether the function recordincludes an application access mechanism that leads to a default stateor a deeper native application state.

A query scoring feature may include any data associated with the searchquery 202. For example, query scoring features may include, but are notlimited to, a number of words in the search query 202, the popularity ofthe search query 202, and the expected frequency of the words in thesearch query 202. A record-query scoring feature may include any datagenerated based on data associated with both the function record and thesearch query 202 that resulted in identification of the function recordby the set generation module 802. For example, record-query scoringfeatures may include, but are not limited to, parameters that indicatehow well the terms of the search query 202 match the terms of theapplication state information of the identified function record. The setprocessing module 804 may generate a result score for a function recordbased on at least one of the record scoring features, the query scoringfeatures, and the record-query scoring features.

The set processing module 804 may determine a result score based on oneor more of the scoring features listed herein and/or additional scoringfeatures not explicitly listed. In some examples, the set processingmodule 804 may include one or more machine learned models (e.g., asupervised learning model) configured to receive one or more scoringfeatures. The one or more machine learned models may generate resultscores based on at least one of the record scoring features, the queryscoring features, and the record-query scoring features. For example,the set processing module 804 may pair the search query 202 with eachfunction record and calculate a vector of features for each (query,record) pair. The vector of features may include one or more recordscoring features, one or more query scoring features, and one or morerecord-query scoring features. The set processing module 804 may theninput the vector of features into a machine-learned regression model tocalculate a result score for the function record. In some examples, themachine-learned regression model may include a set of decision trees(e.g., gradient boosted decision trees). In another example, themachine-learned regression model may include a logistic probabilityformula. In some examples, the machine learned task can be framed as asemi-supervised learning task, where a minority of the training data islabeled with human curated scores and the rest are used without humanlabels.

The result scores 226 associated with the function records (e.g., accessmechanisms) may be used in a variety of different ways. The setprocessing module 804 and/or the user device 102 may rank the accessmechanisms 208 based on the result scores 226 associated with the accessmechanisms 208. In these examples, a larger result score may indicatethat the access mechanism (e.g., the function or application state) ismore relevant to a user than an access mechanism having a smaller resultscore. In examples where the user device 102 displays the search results206 as a list, the user device 102 may display the links for accessmechanisms having larger result scores nearer to the top of the resultslist (e.g., near to the top of the screen). In these examples, the userdevice 102 may display the links for access mechanisms having lowerresult scores farther down the list (e.g., off screen).

In some implementations, the set processing module 804 may scorefunction records based on where the search location is located withinthe geographic area defined by the location data of the function record.For example, the set processing module 804 may assign a larger resultscore to a function record in circumstances when the search location isnearer to the place described by the function record. With respect to afunction record that defines a coordinate and a perimeter (e.g., acircle), the set processing module 804 may assign a larger score to afunction record when the search location is closer to the coordinate.The set processing module 804 may assign a smaller result score to afunction record when the search location is farther from the coordinate(e.g., closer to the perimeter of the geographic area). In one example,the set processing module 804 may generate a scoring feature indicatingthe distance from the search location to the coordinate. For example,the scoring feature may be a number between 0.0 and 1.0 that indicatesthe distance of the search location from the coordinate. In thisexample, a 0.0 may correspond to a search location that is located atthe coordinate (e.g., coordinates 314, 324) of the geographic area(e.g., circular area). A 1.0 may correspond to a search location that islocated at the perimeter of a geographic area (e.g., the perimeter of acircular geographic area).

As described herein, in some implementations, the search module 108 mayperform a location-based search by using the search location to scorefunction records without performing a filtering operation describedabove. For example, the set processing module 804 may score the functionrecords of the consideration set based on whether the search location isincluded in the geographic region defined by the location data. In amore specific example, the set processing module 804 may generate ascoring feature of 0 or 1 that indicates whether the search location isincluded in the geographic region. The set processing module 804 maythen use the generated scoring feature to score the function record. Theset processing module 804 may assign a larger result score to a functionrecord when the search location is included in the geographic area. Theset processing module 804 may assign a smaller score if the searchlocation is outside of the geographic area. In some implementations, theset processing module 804 may score a function record based on how faroutside of the perimeter the search location is located. For example,the set processing module 804 may assign a smaller score when the searchlocation is located farther outside of the geographic area. The setprocessing module 804 may also determine the result score based on howfar outside of the perimeter the search location is located relative tothe size of the perimeter.

As described above, the set processing module 804 may score a functionrecord based on a variety of different factors. In some examples, theset generation module 802 may perform similar scoring operations on thefunction records prior to the set processing module 804. For example,the set generation module 802 may score a function record based on textmatches with the search query 202, the search location, and locationdata of the function record. In some examples, the set generation module802 may exclude function records from the consideration set based on thescores associated with the function records. For example, the setgeneration module 802 may select the highest scoring function recordsfor inclusion into the consideration set.

Although function records in the data store 112 may include locationdata, some function records in the data store 112 may not includelocation data. For example, a function record may not include locationdata when the function record is associated with a function that is notspecific to a geographic area. The search module 108 of the presentdisclosure may be configured to return search results that includeaccess mechanisms which are not associated with location data.

FIG. 9 shows an example method 900 for performing a location-basedsearch. The method 900 is described with reference to the search module108 of FIG. 8. In block 902, the query analysis module 800 receives aquery wrapper 200. In block 904, the query analysis module 800 analyzesthe search query 202. In some implementations, the query analysis module800 may determine whether the search query 202 specifies a location,such as a street address, zip code, or city name.

In block 906, the set generation module 802 determines the searchlocation to be used during the search for function records. If the queryanalysis module 800 determines that the search query 202 includes alocation, then the set generation module 802 may set the detectedlocation (i.e., the query-specified location) as the search location. Ifthe query analysis module 800 determines that the search query 202 doesnot include a location, the set generation module 802 may set the searchlocation to the location of the user device 102, as determined based onother data included in the query wrapper 200, such as geo-location dataindicating latitude and longitude of the user device 102.

In block 908, the set generation module 802 identifies a considerationset of function records based on the search query 202 and the searchlocation, as described above. In block 910, the set processing module804 scores the function records of the consideration set. In someexamples, the set processing module 804 may score the function recordsbased on the search location. In block 912, the set processing module804 selects access mechanisms from the scored function records. Forexample, the set processing module 804 may select access mechanisms fromthe function records associated with the largest result scores. In block914, the set processing module 804 transmits search results 206 to theuser device 102.

Although the search system 100 may be configured to generatelocation-based search results including a variety of different accessmechanisms described above, in some examples, the search system 100 maybe configured to provide location-based search results that are moredirected to assisting a user in finding native applications to download.For example, the search system 100 may be tailored to providing the userwith links including application download addresses in response to aquery wrapper 200 so that a user may find native applications toinstall.

FIGS. 10-11 illustrate an example method and user interface that aredirected to assisting a user in finding native applications to download.With respect to FIGS. 10-11, it may be assumed that the search system100 is configured to receive query wrappers and find native applicationsfor download from a digital distribution platform. It may also beassumed that the search system 100 is configured to generate a list ofapplication download addresses in response to a received query wrapper.The user device 102 may generate download links including theapplication download addresses.

The search system 100 may be configured in a variety of different waysin order to provide the features that are illustrated and described withrespect to FIGS. 10-11. In some implementations, the search system 100may operate as described above, but instead of transmitting anycombination of access mechanisms, the search system 100 may beconfigured to transmit application download addresses (e.g., onlyapplication download addresses).

In other implementations, the search system 100 may be configured tosearch for those function records related to native applications, butnot any particular state which may be accessed by the nativeapplication, as described above. The search system 100 may also beconfigured to return search results to the user associated with thefunction records, such as application download addresses for the nativeapplication described in the function records. As further describedabove, these function records may include application state informationdescribing the native application, instead of a particular state.Example function records of this type may include information, such asthe name of the developer of the native application, the publisher ofthe native application, a category (e.g., genre) of the nativeapplication, a description of the native application (e.g., adeveloper's description), application statistics, the price of thenative application, security or privacy data about the nativeapplication, battery usage of the native application, and bandwidthusage of the native application.

A function record related to a native application, but not anyparticular state of the native application, may include location datathat defines one or more geographic areas in which the nativeapplication is relevant to the user. For example, some nativeapplications may only provide service in certain areas (e.g., a certaincity). In a more specific example, a taxi reservation application mayonly provide service in the one or more cities in which the taxi companyoperates. In this specific example, the location data of the functionrecord may include location data that defines the one or more geographicregions in which the taxi company operates (i.e., the areas in which thetaxi reservation application is relevant).

In some examples, some native applications may have restrictions onlocation, such as a media streaming application that is allowed only incertain countries, or a gambling application that is not allowed to beused outside of a specific state of the United States. In theseexamples, the location data may define geographic areas in which thenative application is not restricted (i.e., the non-restricted areas).In some examples, some native applications may have a primary area ofusefulness or interest based on the regions served by the application.Some examples of native applications associated with a primary area ofusefulness/interest may include, but are not limited to, localtransportation native applications, television network relatedapplications such as television scheduling/streaming apps, nativeapplications for local sporting teams, and native applications for localevents, such as a fair or concert. In these examples, the location datamay define the geographic area of usefulness/interest.

FIG. 10 is a flow diagram illustrating an example method 1000 forperforming a location-based search directed to assisting a user infinding native applications to download. In block 1002, the searchmodule 108 receives the query wrapper 200 from the user device 102 andanalyzes the search query 202. In block 1004, the search module 108determines the search location to use during the search, as describedabove.

In block 1006, the search module 108 generates a consideration set offunction records related to native applications based on the determinedsearch location. For example, each of the function records in theconsideration set may include application state information thatdescribes a native application. Each of the function records in theconsideration may describe a different native application. Accordingly,each of the function records may include application download addressesfor different native applications.

In block 1008, the search module 108 may score the function records ofthe consideration set based on the search location. In block 1010, thesearch module 108 may select application download addresses from thescored function records. In block 1012, the search module 108 transmitssearch results to the user device 102. The search results may includeapplication download addresses and link data for generating userselectable links including the application download addresses.

An example location-based search directed to assisting a user in findingnative applications to download is now described. In this example, itmay be assumed that there are three function records directed to publictransit native applications in the data store 112. The three nativeapplications may include: 1) a Seoul Korea Subway application that liststransit routes in Seoul, South Korea, 2) a San Francisco Trainapplication that lists transit routes in San Francisco, Calif., and 3) aNew York City Subway application that lists subway routes in New YorkCity, N.Y. Each of the three native applications may be relevant tousers in their respective cities and surrounding areas. Accordingly, foreach of the three function records, the record generation module 110 (ora human operator) may generate location data that includes a geographicarea surrounding the respective city. For example, the record generationmodule 110 may generate location data that includes a coordinate at thecity (e.g., the center of the city) and a radius value of 100-200 miles.

In this example, a user near New York City searching for “subway” may bereturned search results including the New York City Subway application,but not returned the San Francisco Train application or the Seoul KoreaSubway application. A user located in San Francisco searching for“Public Transit” may be returned search results including the SanFrancisco Train application, but not the New York City Subwayapplication or the Seoul Korea Subway application. A user locatedanywhere in the world searching for “Seoul Subway” may be returnedsearch results including the Seoul Korea Subway application because thesearch module 108 may set the search location to Seoul Korea based onthe determination that the query specified the location “Seoul.”

FIG. 11 shows an example GUI for a search application directed toassisting a user in finding native applications to download. In FIG. 11,the user entered a search query “Late night food.” In this example, thesearch module 108 returned application download addresses for the YELP®native application, the DOMINO'S PIZZA® native application, theTRIPADVISOR® native application, the OPENTABLE® native application, andthe URBANSPOON® native application. The application download addressesare included in the user selectable links 1100 a-, 1100 b, 1100 c, 1100d and 100 e, illustrated in FIG. 11.

Modules and data stores included in the search system 100 representfeatures that may be included in the search system 100 of the presentdisclosure. For example, the search module 108, the function recordgeneration/update module 110, and the data store 112 may representfeatures included in the search system 100. The modules and data storesdescribed herein may be embodied by electronic hardware, software,firmware, or any combination thereof. Depiction of different features asseparate modules and data stores does not necessarily imply whether themodules and data stores are embodied by common or separate electronichardware or software components. In some implementations, the featuresassociated with the one or more modules and data stores depicted hereinmay be realized by common electronic hardware and software components.In some implementations, the features associated with the one or moremodules and data stores depicted herein may be realized by separateelectronic hardware and software components.

The modules and data stores may be embodied by electronic hardware andsoftware components including, but not limited to, one or moreprocessing units, one or more memory components, one or moreinput/output (I/O) components, and interconnect components. Interconnectcomponents may be configured to provide communication between the one ormore processing units, the one or more memory components, and the one ormore I/O components. For example, the interconnect components mayinclude one or more buses that are configured to transfer data betweenelectronic components. The interconnect components may also includecontrol circuits (e.g., a memory controller and/or an I/O controller)that are configured to control communication between electroniccomponents.

The one or more processing units may include one or more centralprocessing units (CPUs), graphics processing units (GPUs), digitalsignal processing units (DSPs), or other processing units. The one ormore processing units may be configured to communicate with memorycomponents and I/O components. For example, the one or more processingunits may be configured to communicate with memory components and I/Ocomponents via the interconnect components.

A memory component may include any volatile or non-volatile media. Forexample, memory may include, but is not limited to, electrical media,magnetic media, and/or optical media, such as a random access memory(RAM), read-only memory (ROM), non-volatile RAM (NVRAM),electrically-erasable programmable ROM (EEPROM), Flash memory, hard diskdrives (HDD), magnetic tape drives, optical storage technology (e.g.,compact disc, digital versatile disc, and/or Blu-ray Disc), or any othermemory components.

Memory components may include (e.g., store) data described herein. Forexample, the memory components may include the data included in thefunction records of the data store 112. Memory components may alsoinclude instructions that may be executed by one or more processingunits. For example, memory may include computer-readable instructionsthat, when executed by one or more processing units, cause the one ormore processing units to perform the various functions attributed to themodules and data stores described herein.

The I/O components may refer to electronic hardware and software thatprovides communication with a variety of different devices. For example,the I/O components may provide communication between other devices andthe one or more processing units and memory components. In someexamples, the I/O components may be configured to communicate with acomputer network. For example, the I/O components may be configured toexchange data over a computer network using a variety of differentphysical connections, wireless connections, and protocols. The I/Ocomponents may include, but are not limited to, network interfacecomponents (e.g., a network interface controller), repeaters, networkbridges, network switches, routers, and firewalls. In some examples, theI/O components may include hardware and software that is configured tocommunicate with various human interface devices, including, but notlimited to, display screens, keyboards, pointer devices (e.g., a mouse),touchscreens, speakers, and microphones. In some examples, the I/Ocomponents may include hardware and software that is configured tocommunicate with additional devices, such as external memory (e.g.,external HDDs).

In some implementations, the search system 100 may be a system of one ormore computing devices (e.g., a computer search system) that areconfigured to implement the techniques described herein. Put anotherway, the features attributed to the modules and data stores describedherein may be implemented by one or more computing devices. Each of theone or more computing devices may include any combination of electronichardware, software, and/or firmware described above. For example, eachof the one or more computing devices may include any combination ofprocessing units, memory components, I/O components, and interconnectcomponents described above. The one or more computing devices of thesearch system 100 may also include various human interface devices,including, but not limited to, display screens, keyboards, pointingdevices (e.g., a mouse), touchscreens, speakers, and microphones. Thecomputing devices may also be configured to communicate with additionaldevices, such as external memory (e.g., external HDDs).

The one or more computing devices of the search system 100 may beconfigured to communicate with the network 106. The one or morecomputing devices of the search system 100 may also be configured tocommunicate with one another (e.g., via a computer network). In someexamples, the one or more computing devices of the search system 100 mayinclude one or more server computing devices configured to communicatewith user devices (e.g., receive query wrappers and transmit searchresults), gather data from data sources 104, index data, store the data,and store other documents. The one or more computing devices may residewithin a single machine at a single geographic location in someexamples. In other examples, the one or more computing devices mayreside within multiple machines at a single geographic location. Instill other examples, the one or more computing devices of the searchsystem 100 may be distributed across a number of geographic locations.

What is claimed is:
 1. A method comprising: receiving, at a computingdevice, a search query from a user device; identifying, by the computingdevice, a plurality of function records included in a data store basedon the received search query, each of the function records including: anaccess mechanism specifying a state of an application; state informationcorresponding to the state of the application specified by the accessmechanism; and location data including a coordinate and a perimeter,wherein the coordinate defines the location of a place corresponding tothe state information and the perimeter defines a geographic areasurrounding the coordinate; determining, by the computing device, asearch location; for each of the plurality of function records,determining, by the computing device, whether the search location islocated within the geographic area defined by the location data of thefunction record; selecting, by the computing device, access mechanismsfrom function records that include location data defining a geographicarea that includes the search location; and transmitting the selectedaccess mechanisms from the computing device to the user device.
 2. Themethod of claim 1, wherein the identified plurality of function recordscomprise a first set of function records defining geographic areas thatinclude the search location, wherein the identified plurality offunction records include a second set of function records defininggeographic areas that do not include the search location, and whereinselecting access mechanisms from function records comprises filteringout function records in the second set of function records and selectingaccess mechanisms from the first set of function records.
 3. The methodof claim 1, further comprising generating, by the computing device, theperimeter for at least one of the function records based on thepopulation of the area surrounding the coordinate.
 4. The method ofclaim 1, further comprising generating, by the computing device, theperimeter for at least one of the function records based on thepopulation density of the area surrounding the coordinate.
 5. The methodof claim 1, further comprising generating, by the computing device, theperimeter for at least one of the function records based on theproximity of the coordinate to transportation infrastructure.
 6. Themethod of claim 1, further comprising generating, by the computingdevice, the perimeter for at least one of the function records based onthe popularity of the place defined by the state information.
 7. Themethod of claim 1, wherein, for at least one of the plurality offunction records, the perimeter is a circular perimeter defining acircular geographic area surrounding the coordinate, and wherein thecoordinate defines a center point of the circular perimeter.
 8. Themethod of claim 7, wherein the location data includes a radius valuearound the coordinate that defines the circular perimeter, and whereinthe method further comprises generating, by the computing device, theradius value based on the population of the geographic area surroundingthe coordinate.
 9. The method of claim 1, wherein, for at least one ofthe plurality of function records, the perimeter is a polygon perimeterdefining a geographic area surrounding the coordinate, and wherein thecoordinate defines a center point of the polygon perimeter.
 10. Themethod of claim 1, further comprising, for each of the identifiedfunction records, determining, by the computing device, a score for thefunction record based on where the determined search location is locatedwithin the geographic area defined by the location data of the functionrecord, wherein the score indicates a relevance of the identifiedfunction record to the search query and the search location.
 11. Themethod of claim 10, wherein determining the score for the functionrecord further comprises determining the score based on the distance ofthe search location from the coordinate.
 12. The method of claim 1,further comprising receiving, at the computing device, data from theuser device indicating the geo-location of the user device, whereindetermining the search location comprises determining the searchlocation based on at least one of a location specified in the searchquery and the data from the user device indicating the geo-location ofthe user device.
 13. A system comprising: a non-transitory data storethat includes function records, each of the function records comprising:an access mechanism specifying a state of an application; stateinformation corresponding to the state of the application specified bythe access mechanism; and location data including a coordinate and aperimeter, wherein the coordinate defines the location of a placecorresponding to the state information and the perimeter defines ageographic area surrounding the coordinate; and one or more computingdevices in communication with the non-transitory data store andconfigured to: receive a search query from a user device; identify aplurality of function records included in the data store based on thereceived search query; determine a search location; for each of theplurality of function records, determine whether the search location islocated within the geographic area defined by the location data of thefunction record; select access mechanisms from function records thatinclude location data defining a geographic area that includes thesearch location; and transmit the selected access mechanisms to the userdevice.
 14. The system of claim 13, wherein the one or more computingdevices are configured to select access mechanisms by filtering outfunction records that define geographic areas that do not include thesearch location and selecting access mechanisms that define geographicareas that include the search location.
 15. The system of claim 13,wherein the one or more computing devices are configured to generate theperimeter for at least one of the function records based on thepopulation of the area surrounding the coordinate.
 16. The system ofclaim 13, wherein the one or more computing devices are configured togenerate the perimeter for at least one of the function records based onthe population density of the area surrounding the coordinate.
 17. Thesystem of claim 13, wherein, for at least one of the plurality offunction records, the perimeter is a circular perimeter defining acircular geographic area surrounding the coordinate, and wherein thecoordinate defines a center point of the circular perimeter.
 18. Thesystem of claim 17, wherein the location data includes a radius valuearound the coordinate that defines the circular perimeter, and whereinthe one or more computing devices are configured to generate the radiusvalue based on the population of the geographic area surrounding thecoordinate.
 19. The system of claim 13, wherein the one or morecomputing devices are configured to determine, for each of theidentified function records, a score for the function record based onwhere the determined search location is located within the geographicarea defined by the location data of the function record, and whereinthe score indicates a relevance of the identified function record to thesearch query and the search location.
 20. A non-transitorycomputer-readable storage medium comprising instructions that cause oneor more computing devices to: receive a search query from a user device;identify a plurality of function records included in a data store basedon the received search query, each of the function records including: anaccess mechanism specifying a state of an application; state informationcorresponding to the state of the application specified by the accessmechanism; and location data including a coordinate and a perimeter,wherein the coordinate defines the location of a place corresponding tothe state information and the perimeter defines a geographic areasurrounding the coordinate; determine a search location; for each of theplurality of function records, determine whether the search location islocated within the geographic area defined by the location data of thefunction record; select access mechanisms from function records thatinclude location data defining a geographic area that includes thesearch location; and transmit the selected access mechanisms to the userdevice.